package com.lei.huawei;

import java.util.Scanner;

/**
 * @author: leiGer
 * @Date: 2022/03/01
 * @Time: 0:03
 */
 /*描述
输入一个单向链表和一个节点的值，从单向链表中删除等于该值的节点，删除后如果链表中无节点则返回空指针。

链表的值不能重复。

构造过程，例如输入一行数据为:
6 2 1 2 3 2 5 1 4 5 7 2 2
则第一个参数6表示输入总共6个节点，第二个参数2表示头节点值为2，剩下的2个一组表示第2个节点值后面插入第1个节点值，为以下表示:
1 2 表示为
2->1
链表为2->1

3 2表示为
2->3
链表为2->3->1

5 1表示为
1->5
链表为2->3->1->5

4 5表示为
5->4
链表为2->3->1->5->4

7 2表示为
2->7
链表为2->7->3->1->5->4

最后的链表的顺序为 2 7 3 1 5 4

最后一个参数为2，表示要删掉节点为2的值
删除 结点 2

则结果为 7 3 1 5 4

数据范围：链表长度满足 1 \le n \le 1000 \1≤n≤1000  ，节点中的值满足 0 \le val \le 10000 \0≤val≤10000 

测试用例保证输入合法


输入描述：
输入一行，有以下4个部分：
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值

输出描述：
输出一行
输出删除结点后的序列，每个数后都要加空格*/
//HJ48 从单向链表中删除指定值的节点
public class DelZhiDingNode {
    static class Node{
        int val;
        Node next;
        public Node(int val){
            this.val = val;
        }
    }
    static Node head;
    public static void main(String[]args){

        Scanner s = new Scanner(System.in);
        while(s.hasNext()){
            int n = s.nextInt();
            int headVal =  s.nextInt();
            head = new Node(headVal);
            for(int i = 0;i< n-1;i++){
                int a =  s.nextInt();
                int b =  s.nextInt();
                insert(a,b);
            }
            int delNum =  s.nextInt();
            delete(delNum);
        }

    }
    public static void insert(int a,int b){
        Node temp = head;
        Node insertNode = new Node(a);
        while(temp != null){
            if(temp.val == b){
                insertNode.next = temp.next;
                temp.next = insertNode;
                break;
            }else{
                temp = temp.next;
            }
        }
    }
    public static void delete(int a){
        Node tmp =head;
        while(tmp != null){
            if(tmp.val != a){
                System.out.print(tmp.val+ " ");
                tmp = tmp.next;
            }else{
                tmp = tmp.next;
            }
        }
    }
}
